/* ColorStrings.cpp
 * 
 *  Author          : Alexander J. Yee
 *  Date Created    : 03/09/2018
 *  Last Modified   : 03/09/2018
 * 
 */

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//  Dependencies
#include "PublicLibs/Types.h"
#include "ColorStrings.h"
namespace ymp{
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
std::string merge_to_string(const ColoredLine& line){
    std::string str;
    for (const ColorString& x : line){
        str += x.text;
    }
    return str;
}
void merge_same_color_blocks(ColoredLine& line){
    if (line.empty()){
        return;
    }

    upL_t w = 0;
    upL_t r = 1;
    while (r < line.size()){
        if (line[w].color == line[r].color){
            line[w].text += line[r].text;
            r++;
        }else{
            w++;
            line[w] = std::move(line[r]);
            r++;
        }
    }
    line.resize(w + 1);
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
}
